package com.lms.collection.set;

import java.util.*;

/**
 * @Author: 李孟帅
 * @CreateTime: 2020-06-10 07:17
 * @Description:
 */
public class TreeSetDemo {
    public static void main(String[] args) {
        //构造一个新的，空的树组，根据其元素的自然排序进行排序。
        TreeSet<Integer> set = new TreeSet<>();
        //构造一个新的，空的树集，根据指定的比较器进行排序。
        TreeSet<Integer> treeSet = new TreeSet<>(Comparator.comparingInt(n -> -n));
        //构造一个包含相同元素的新树，并使用与指定排序集相同的顺序。
        TreeSet<Integer> integers = new TreeSet<>(treeSet);
        //构造一个包含指定集合中的元素的新树集，根据其元素的 自然排序进行排序 。
        TreeSet<Integer> integers1 = new TreeSet<>(Arrays.asList(1, 2));
        treeSet.add(1);
        treeSet.add(2);
        treeSet.add(3);
        treeSet.add(4);
        treeSet.add(5);
        treeSet.add(6);
        //返回此集合中最小元素大于或等于给定元素，如果没有此元素，则返回 null,注意大小按排序来，5，4，2，1，
        Integer ceiling = treeSet.ceiling(3);
        //以降序返回该集合中的元素的迭代器。
        Iterator<Integer> integerIterator = treeSet.descendingIterator();
        //返回此集合中包含的元素的反向排序视图。
        NavigableSet<Integer> integers2 = treeSet.descendingSet();
        //返回此集合中当前的第一个（最低）元素。
        Integer first = treeSet.first();
        //返回此集合中当前的最后（最高）元素。
        Integer last = treeSet.last();
        //返回此集合中最大的元素小于或等于给定元素，如果没有这样的元素，则返回 null 。大小按照排序来，排在前面的小
        Integer floor = treeSet.floor(3);
        //返回此集合的部分的视图，其元素严格小于 toElement 。
        SortedSet<Integer> integers3 = treeSet.headSet(3);
        //返回该集合的部分的视图，其元素小于（或等于，如果 inclusive为真） toElement 。
        NavigableSet<Integer> integers4 = treeSet.headSet(3, true);
        //返回此组件的元素大于或等于 fromElement的部分的视图。
        SortedSet<Integer> integers6 = treeSet.tailSet(3);
        //返回此集合的部分的视图，其元素大于（或等于，如果 inclusive为真） fromElement 。
        NavigableSet<Integer> integers7 = treeSet.tailSet(3, true);
        //返回严格大于给定元素的该集合中的最小元素，如果没有此元素则返回 null 。
        Integer higher = treeSet.higher(3);
        //返回这个集合中最大的元素严格小于给定的元素，如果没有这样的元素，则返回 null 。
        Integer lower = treeSet.lower(3);
        //检索并删除第一个（最低）元素，或返回 null如果该集合为空。
        Integer integer = treeSet.pollFirst();
        //检索并删除最后一个（最高）元素，如果此集合为空，则返回 null 。
        Integer integer1 = treeSet.pollLast();
        //返回该集合的部分的视图，其元素的范围从 fromElement到 toElement 。false表示不包含。
        NavigableSet<Integer> integers5 = treeSet.subSet(3, false, 1, true);
        //返回此集合的部分的视图，其元素的范围从 fromElement （含）到 toElement ，排他。
        SortedSet<Integer> integers8 = treeSet.subSet(3, 1);
        System.out.println(integers5);


    }
}
